1. Field of the Invention
The present invention relates to scanners capable of scanning at a number of horizontal and vertical resolutions and capable of processing scanned data at a number of clock frequencies. In particular, the present invention relates to scanners that process data at a rate approximately equal to an average data transfer rate between the scanner and a receiving device.
2. Description of the Related Art
A scanner generally includes a sensor, a light source, a processor to process the information sensed by the sensor, a buffer to store the information, and a stepper motor to move the sensor. The processor processes data at a given clock speed, stores the data in the buffer, and supplies it to an associated personal computer (PC). The sensor includes a number of light-sensing elements and typically extends horizontally across the scan area. The horizontal area covered by the sensor is called a scan line. The amount of time the scanner takes to scan one scan line is called the integration time. The stepper motor moves the sensor vertically across the scan area. One unit of movement of the stepper motor is called a step.
Existing scanners have a number of problems, including the following three concerns. First, many existing scanners do not consider the scanner-to-PC data rate (also called the PC IO speed) when sending data to the PC. The clock speed of the scanner controls the rate at which analog data from the sensor is converted into digital image data. Ideally one would like a scan to go as fast as possible, so a high clock speed would seem to be preferred. However, the maximum data transfer rate from the scanner to the PC provides a bottleneck. This bottleneck causes the buffer to eventually fill up, forcing the scanner to pause and resume once the buffer has been emptied, which wastes time.
For example, assume an image data size of 25 MB, which is approximately the data size of an 8.5 by 11 inch image scanned at 300 by 300 dots per inch (DPI) resolution in red/green/blue (RGB) color. Further assume a scan rate (the speed at which the scanner scans the image) of 1 megabyte per second (MB/s), a data transfer rate (the speed at which the scanner transfers the image data to the PC) of 0.8 MB/s, a buffer size of 100 kB, and a resume time of 0.5 seconds. The ideal scan time is the image data size divided by the data transfer rate, which is (25 MB/0.8 MB/s=31.25) 31.25 seconds. However, the time to fill the buffer is the buffer size divided by the difference between the scan rate and the data transfer rate, which is (100 kB/s/(1.0-0.8 MB/s)=0.5) 0.5 seconds. At this point the scanner pauses, having transferred only 0.5 MB of the image data. This implies 50 pauses for the 25 MB image. The time to empty the buffer is the buffer size divided by the data transfer rate, which is (100 kB/0.8 MB/s=0.125) 0.125 seconds. Once the buffer is emptied, the scanner takes a finite time to resume, 0.5 seconds in this example. Thus, the actual scan time is the number of pauses times the sum of the time to fill the buffer, the time to empty the buffer, and the resume time, which is (50* (0.5+0.125+0.5)=56.25) 56.25 seconds. This is (56.25/31.25=1.8) 1.8 times longer than the ideal scan time.
One way to improve the actual scan time to approach the ideal scan time is to provide a larger buffer. However, this increases the cost of the scanner. It also fails to directly improve the restart time (although it does decrease the number of restarts necessary for a given scan). Another way is to increase the transmission capacity of the scanner-to-PC link to eliminate the bottleneck. However, at foreseeable relative technology levels, processors will continue to be able to process data faster than transmission links can transmit it, so the bottleneck would likely remain. Thus, a way is needed to decrease or eliminate the number of pauses.
Second, many existing scanners tie the stepper motor speed to the integration period (the time required to scan one horizontal line). The stepper motor controls the vertical resolution because it moves the sensor vertically across the item to be scanned. These scanners lock the step period (the time required to go one vertical step) to the integration period. These scanners can take only an integer number of steps each integration period.
A problem resulting from this is that the scanner supports only a few resolutions. For example, for a 600 DPI sensor with a step size of {fraction (1/600)}th of an inch, taking integer steps results in resolutions of 600 DPI at one step per integration period, 300 DPI at two steps, 200 DPI at three steps, 150 DPI at four steps, etc. A popular solution is to discard lines that are scanned. For example, to scan at 500 DPI, the sensor moves one step per integration period (resulting in a 600 DPI actual scan) and then 100 lines per inch are discarded. This can burden the scanner because the scanner must spend the time to scan lines that will not be used. This results in a longer scan time than is required. Thus, a way is needed to increase the number of available resolutions without unnecessarily burdening the scanner.
Third, many existing scanners discard pixels that are read by the sensor to reduce the horizontal resolution of the scanned image. Reducing resolution at the scanner reduces the amount of data that must be transmitted to the PC and can improve scan time. The sensor still reads the full number of analog pixels according to its resolution capacity, but the processor discards pixels before processing them into the digital scanned image data. For example, for a 600 DPI sensor, if a resolution of 300 DPI is desired, the processor may discard every other pixel. This discarding can result in aliasing because information is lost. To provide the best image quality, a way is needed to retain the full amount of information while still reducing the resolution.
The present invention addresses these and other problems of the prior art by providing an apparatus, method, and computer program for increasing data throughput, increasing available resolutions, and reducing aliasing in scanners.
According to one embodiment, an apparatus according to the present invention controls a scanner to increase data throughput, and includes a data rate adjustment circuit to control a rate at which processed scanner data is generated. The data rate adjustment circuit may adjust the scanning clock frequency, the vertical resolution, and the horizontal resolution. A further embodiment is a scanner including the data rate adjustment circuit. Adjustment of the data rate allows the apparatus to match the average data transfer rate to an associated device, which eliminates restarts.
According to another embodiment, an apparatus according to the present invention controls a scanner to increase available resolutions, and includes a step signal generation circuit to generate a signal indicative of one of a plurality of resolutions corresponding to a non-integer number of steps per line. A further embodiment is a scanner including the step signal generation circuit. Generating a non-integer number of steps per line increases the available number of resolutions and eliminates the time used to scan lines that may be later discarded.
According to yet another embodiment, an apparatus according to the present invention controls a scanner to reduce aliasing, and includes an averaging circuit to average together pixels to generate processed scanner data. A further embodiment is a scanner including the averaging circuit. Averaging pixels reduces the aliasing inherent in scanners that discard pixels.
According to still another embodiment, a method according to the present invention controls a scanner to increase data throughput, and includes the step of scanning an image such that processed image data is generated at a rate approximately equal to an average data transfer rate. The step of scanning may include the steps of adjusting the scanning clock frequency, adjusting the vertical resolution, and adjusting the horizontal resolution.
According to another embodiment, a method according to the present invention controls a scanner to increase available resolution, and includes the step of adjusting a step size of relative movement between an image and a scanner sensor, wherein the step size corresponds to a non-integer number of steps per line.
According to yet another embodiment, a computer program according to the present invention controls a scanner to increase data throughput, and includes a target rate calculation subroutine that calculates a target rate approximately equal to an average data transfer rate.
According to still another embodiment, a computer program according to the present invention controls a scanner to increase available resolutions, and includes a step size calculating subroutine that calculates a step size of relative movement between an image and a scanner sensor, wherein the step size corresponds to a non-integer number of steps per line.